package com.innovations.inn.service.impl;

import com.innovations.common.utils.DateUtils;
import com.innovations.common.utils.uuid.IdGeneratorSnowflake;
import com.innovations.inn.domain.TagInfo;
import com.innovations.inn.mapper.TagInfoMapper;
import com.innovations.inn.service.ITagInfoService;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * 标签信息Service业务层处理
 *
 * @author dp
 * @date 2024-08-10
 */
@Service
public class TagInfoServiceImpl implements ITagInfoService {
    @Autowired
    TagInfoMapper tagInfoMapper;
    @Autowired
    IdGeneratorSnowflake idGeneratorSnowflake;

    /**
     * 查询标签信息
     *
     * @param tagId 标签信息主键
     * @return 标签信息
     */
    @Override
    public TagInfo selectTagInfoByTagId(Long tagId) {
        return tagInfoMapper.selectTagInfoByTagId(tagId);
    }

    /**
     * 查询标签信息-根据标签描述
     *
     * @param tagDesc 标签描述
     * @return 标签信息
     */
    public TagInfo selectTagInfoByTagDesc(String tagDesc) {
        return tagInfoMapper.selectTagInfoByTagDesc(tagDesc);
    }

    /**
     * 查询标签信息列表
     *
     * @param tagInfo 标签信息
     * @return 标签信息
     */
    @Override
    public List<TagInfo> selectTagInfoList(TagInfo tagInfo) {
        return tagInfoMapper.selectTagInfoList(tagInfo);
    }

    /**
     * 新增标签信息
     *
     * @param tagInfo 标签信息
     * @return 结果
     */
    @Override
    public int insertTagInfo(TagInfo tagInfo) {
        tagInfo.setCreateTime(DateUtils.getNowDate());
        return tagInfoMapper.insertTagInfo(tagInfo);
    }

    /**
     * 修改标签信息
     *
     * @param tagInfo 标签信息
     * @return 结果
     */
    @Override
    public int updateTagInfo(TagInfo tagInfo) {
        return tagInfoMapper.updateTagInfo(tagInfo);
    }

    /**
     * 批量删除标签信息
     *
     * @param tagIds 需要删除的标签信息主键
     * @return 结果
     */
    @Override
    public int deleteTagInfoByTagIds(Long[] tagIds) {
        return tagInfoMapper.deleteTagInfoByTagIds(tagIds);
    }

    /**
     * 删除标签信息信息
     *
     * @param tagId 标签信息主键
     * @return 结果
     */
    @Override
    public int deleteTagInfoByTagId(Long tagId) {
        return tagInfoMapper.deleteTagInfoByTagId(tagId);
    }

    /**
     * 实体数据补全
     *
     * @param tagInfo   实体
     * @param userId    用户id
     * @param crateType 创建类型 1：新增 2：修改
     */
    @Override
    public void completeData(TagInfo tagInfo, Long userId, Integer crateType) {
        //主键
        if (tagInfo.getTagId() == null || "".equals(tagInfo.getTagId())) {
            tagInfo.setTagId(idGeneratorSnowflake.nextId());
        }
        //创建人、创建时间
        if (crateType == 1) {
            if (tagInfo.getCreateBy() == null || "".equals(tagInfo.getCreateBy())) {
                tagInfo.setCreateBy(userId);
            }
            if (tagInfo.getCreateTime() == null) {
                tagInfo.setCreateTime(DateUtils.getNowDate());
            }
        }
    }
}
